iT邦幫忙

2022 iThome 鐵人賽

DAY 7
0
Mobile Development

Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore系列 第 7

EP07: Fix obsolete property and add Resource files by using .NET MAUI

  • 分享至 

  • xImage
  •  

Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~

在本系列文會利用目前 Visual Studio 內建的專案樣本建立一個初始的 .NET MAUI 專案,並且透過此 .NET MAUI 專案來把 TopStore App 的開發從 Xamairn.Forms 轉換到 .NET MAUI 上進行。

本篇是 Re: 從零改成用 .NET MAUI 技術來繼續過去用 Xamarin 開發的一個 App : TopStore 系列 系列文的 EP07。


最後來進行已被移除的類別庫與調整。

由於升級這件事,必然會遭遇部分類別庫當中的 API 或是屬性無法直接對應,在目前 TopStoreApp 開發於 Xamarin.Forms 版本中所寫到的部分,有使用到 Frame 這個 UI 元件,其中的 OutlineColor 屬性,在微軟官方文件當中就已經明確告知已移除,並請改換 BorderColor 使用:
https://learn.microsoft.com/dotnet/api/Xamarin.Forms.Frame.OutlineColor

根據過去 Xamarin.Forms 的原始碼 PR 修正,可觀看此連結:
https://github.com/xamarin/Xamarin.Forms/pull/1385

所以,如果是已經歷經前 6 回調整的 .NET MAUI 版本的 TopStoreApp 專案,直接進行專案編譯,會顯示如下錯誤訊息:
01-1

因此,來將 OutlineColor 屬性改換 BorderColor 並使用想要設定的顏色來調整:
01-2

接著,來進行一些根據 .NET MAUI 新設計的開發觀點來調整程式。

像是過去 Xamarin.Forms 當中運用字型圖示檔來設定 FontImageSource 的方式,在 .NET MAUI 已經可由共用 Resources 底下的 Fonts 字型檔來提供 (EP04 所設定),就需要改成現在 .NET MAUI 的設計方式來使用。

來開啟 .NET MAUI 專案當中的 "MauiProgram.cs" 檔案,會注意到 MauiAppBuilder 已經有透過 .ConfigureFonts() 設定既有存在預設範本專案的字型檔案。
02-1

在這邊變更為先前加入的 "FontAwesome5.otf" 的使用:
02-2

進行測試執行 Part 1

到這邊就可以來嘗試把 TopStoreApp 的 .NET MAUI 版本在四種平台測試執行看看了!

Windows

若在 Visual Studio 2022 執行架構 (.net6.0-Windows) 的設定底下執行:
03

即可看到 TopStoreApp 在 Windows 環境當中執行起來(注意 Windows 10/11 中必須先 "同意" 使用開發者模式進行側載安裝):

聯絡人列表頁面:
03-1-1

聯絡人新增/修改頁面:
03-1-2

物品項頁面:
03-2

訂單頁面:
03-3

設定頁面:
03-4

Android

若切換 Visual Studio 2022 執行架構 (.net6.0-Android) 的設定底下執行:
04

即可看到 TopStoreApp 在 Android 環境當中執行起來:

聯絡人列表頁面:
04-1-1

聯絡人新增/修改頁面:
04-1-2

物品項頁面:
04-2

訂單頁面:
04-3

設定頁面:
04-4

至於 iOS 與 macOS 就留待下一回來測試執行囉!

本 EP 介紹所完成的範例程式碼可在此下載



上一篇
EP06: Transfer the namespace of XAML and C# Code from Xamarin.Forms to .NET MAUI Project
下一篇
EP08: Test App runs on iOS and macOS
系列文
Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言